#ifndef MEANSKNOWLEDGE_H
#define MEANSKNOWLEDGE_H
#include <QString>
#include "position.h"
#include "knowledges.h"



namespace IAlib
{
    class MeansKnowledge : public Knowledges
    {
    public:

        enum  Means_Knowledge_TYPE
        {
            Means_Knowledge_TYPE_COM,
            Means_Knowledge_TYPE_INFO,
            Means_Knowledge_TYPE_VEHICLE,
            Means_Knowledge_TYPE_OTHER
        };

        enum  Means_Knowledge_STATE
        {
            Means_Knowledge_STATE_AVAILABLE,
            Means_Knowledge_STATE_UNAVAILABLE,
            Means_Knowledge_STATE_UNKNOWN
        };

        MeansKnowledge();
        MeansKnowledge(const MeansKnowledge& knowledge);

        void setMeansID(const QString& id) { m_means_id = id; }
        QString getMeansID() const { return m_means_id; }

        void setData(const QString& data) { m_data = data; }
        QString getData() const { return m_data; }

        void setExclusive(const bool exclusive) { m_exclusive = exclusive; }
        bool isExclusive() const { return m_exclusive; }

        void setTransportable(const bool transportable) { m_transportable = transportable; }
        bool isTransportable() const { return m_transportable; }

        void setMaxSlot(const int slot) { m_max_slot = slot; }
        int getMaxSlot() const { return m_max_slot; }

        void setPosition(const Position& position) { m_position = position; }
        void setPosition(const float x, const float y, const float z, const QString& work_space_id);
        Position getPosition() const { return m_position; }

        virtual QByteArray toByteArray() const ;
        virtual void fromByteArray(QByteArray& byte_array);


    private:

        QString m_means_id;
        QString m_data;

        bool m_exclusive;
        bool m_transportable;
        int  m_max_slot;

        Position m_position;

        Means_Knowledge_TYPE  m_means_type;
        Means_Knowledge_STATE m_state;

    };
}
#endif // MEANSKNOWLEDGE_H
